
package co.com.smart.eagle.client.view.impl.smartlabel;

import com.google.gwt.dom.client.Element;
import com.google.gwt.i18n.shared.DirectionEstimator;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Label;

/**
 * Widget que contiene cualquier texto no interpretado como HTML. Usa el elemento <div>.
 *
 */

public class SmartLabel extends Label implements IsWidget{
	
	private boolean obligatorio = false;
	private boolean attached = false;
	private boolean label = true;
	
	private Element asterisco;
	{
		asterisco = DOM.createSpan();
		asterisco.setInnerHTML("&nbsp;(*)");
		asterisco.addClassName("required");
	}

	
	public SmartLabel() {
		super();
	}

	
	public SmartLabel(Element element) {
		super(element);
	}

	
	public SmartLabel(String text, boolean wordWrap) {
		super(text, wordWrap);
	}

	
	public SmartLabel(String text, Direction dir) {
		super(text, dir);
	}

	
	public SmartLabel(String text, DirectionEstimator directionEstimator) {
		super(text, directionEstimator);
	}

	
	public SmartLabel(String text) {
		super(text);
	}
	
	@Override
	protected void onAttach() {
		
		attached = true;
		if(obligatorio){
			getElement().appendChild(asterisco);
		}
		super.onAttach();
	}

			
	
	public boolean isObligatorio() {
		return obligatorio;
	}

	public void setObligatorio(boolean obligatorio) {
		if(attached){
			if(obligatorio != this.obligatorio){
				if(obligatorio){
					getElement().appendChild(asterisco);
				}else{
					getElement().removeChild(asterisco);
				}
			}
		}
		this.obligatorio = obligatorio;
	}

	public boolean isLabel() {
		return label;
	}

	public void setLabel(boolean label) {
		this.label = label;
	}
	
	public void setLabel(String label){
		if("true".equalsIgnoreCase(label) || "false".equalsIgnoreCase(label)){
			setLabel(Boolean.parseBoolean(label));
		}else if("s".equalsIgnoreCase(label) || "n".equalsIgnoreCase(label)){
			setLabel("s".equalsIgnoreCase(label));
		}else{
			setLabel(true);
		}
	}
}

